home *** CD-ROM | disk | FTP | other *** search
/ QRZ! Ham Radio 5 / QRZ Ham Radio Callsign Database - Volume 5.iso / unix / src / mkstates.c < prev    next >
C/C++ Source or Header  |  1993-11-01  |  2KB  |  156 lines

  1.  
  2.  
  3. #include <stdio.h>
  4. #include <string.h>
  5. #include "cb.h"
  6.  
  7. #define NST 60
  8.  
  9. main(argc,argv)
  10. int argc;
  11. char *argv[];
  12. {
  13.     FILE *fp;
  14.     FILE *op;
  15.     FILE *sp[NST];
  16.     long pos;
  17.     char    str[256];
  18.     char    tmp[256];
  19.     char    *f[20];        /* fields */
  20.     char    *p;
  21.     int    i;
  22.     int    recs;
  23.  
  24. static char *names[] = {
  25.  
  26.         "AA","AE","AK","AL","AP","AR","AS","AZ","CA","CO","CT",
  27.         "DC","DE","FL","GA","GU","HI","IA","ID","IL","IN","KS",
  28.         "KY","LA","MA","MD","ME","MI","MN","MO","MP","MS","MT",
  29.         "NC","ND","NE","NH","NJ","NM","NV","NY","OH","OK","OR",
  30.         "PA","PR","RI","SC","SD","TN","TX","UM","UT","VA","VI",
  31.         "VT","WA","WI","WV","WY"
  32.  
  33.             };
  34.  
  35.     for (i=0; i<NST; i++)
  36.     {
  37.         sprintf(str,"states/%s",names[i]);
  38.         if ((sp[i]=fopen(str,"w")) == NULL)
  39.         {
  40.             printf ("\nError opening %s\n",str);
  41.             exit(0);
  42.         }
  43.     }
  44.     
  45.     if (!argv[1])
  46.     {
  47.         printf("Usage: %s dbase_name\n",argv[0]);
  48.         exit(1);
  49.     }
  50.     if ((fp=fopen(argv[1],"r")) == NULL)
  51.     {
  52.         printf("Error opening %s\n",argv[1]);
  53.         exit(1);
  54.     }
  55.  
  56.     recs = 0;
  57.     while (!feof(fp))
  58.     {
  59.         memset(str,0,sizeof(str));
  60.         memset(tmp,0,sizeof(tmp));
  61.         memset(f,0,sizeof(f));
  62.  
  63.         fgets(str,sizeof(str),fp);
  64.         if ((int)strlen(str) < 10)
  65.             continue;
  66.  
  67.         strcpy(tmp,str);
  68.         mk_fields(tmp,f);
  69.  
  70.         for (i=0; i<NST; i++)
  71.         {
  72.             if (!strcmp(f[MAIL_ST],names[i]))
  73.                 break;
  74.         }
  75.  
  76.         if (i == NST)
  77.         {
  78.             printf("Unknown entry: \n%s\n",str);
  79.             continue;
  80.         }
  81.  
  82.         if (f[P_CALL])
  83.             while(f[P_CALL][0] == ' ')
  84.                 f[P_CALL]++;
  85.  
  86.         if (f[P_CALL][0])
  87.         {
  88.  
  89.             fprintf(sp[i],"%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s\n",
  90.                 f[CALL],
  91.                 f[LNAME],
  92.                 f[FNAME],
  93.                 f[MI],
  94.                 f[JR],
  95.                 f[DOB],
  96.                 f[MAIL_STR],
  97.                 f[MAIL_CITY],
  98.                 f[MAIL_ST],
  99.                 f[MAIL_ZIP],
  100.                 f[CLASS],
  101.                 f[P_CALL]
  102.                 );
  103.         }
  104.         else
  105.         {
  106.             fprintf(sp[i],"%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s\n",
  107.                 f[CALL],
  108.                 f[LNAME],
  109.                 f[FNAME],
  110.                 f[MI],
  111.                 f[JR],
  112.                 f[DOB],
  113.                 f[MAIL_STR],
  114.                 f[MAIL_CITY],
  115.                 f[MAIL_ST],
  116.                 f[MAIL_ZIP],
  117.                 f[CLASS]
  118.                 );
  119.         }
  120.  
  121.         recs++;
  122.     }
  123.  
  124.     fclose(fp);
  125.     for (i=0; i<NST; i++)
  126.         fclose(sp[i]);
  127.  
  128.     printf("\n%d records processed\n",recs);
  129.     exit(0);
  130. }
  131.  
  132.  
  133. mk_fields(s,f)
  134. char *s;
  135. char *f[];
  136. {
  137.     int i;
  138.     char *p;
  139.  
  140.     if (p = strchr(s,'\n'))
  141.         *p = '\0';
  142.     i = 0;
  143.     f[i] = s;
  144.     while (*s)
  145.     {    
  146.         if (*s == '|')
  147.         {
  148.             *s++ = '\0';
  149.             f[++i] = s;
  150.         }
  151.         else
  152.             s++;
  153.     }
  154. }
  155.  
  156.